package com.msh.artascope.devcloud.service.service;

import com.msh.artascope.devcloud.client.po.DomainConfigPo;
import com.msh.artascope.devcloud.client.qo.DomainConfigQo;
import com.msh.artascope.devcloud.service.model.query.DomainConfigQueryVo;
import com.msh.artascope.devcloud.service.model.vo.DomainConfigVo;
import com.msh.artascope.devcloud.service.wrapper.K8sWrapper.K8sInfo;
import com.msh.frame.client.base.TenantBaseService;
import com.msh.frame.client.common.Result;
import java.util.List;

/**
 * @author shihu
 * @email m-sh@qq.com
 */
public interface DomainConfigService extends TenantBaseService<DomainConfigPo, DomainConfigQo> {

  DomainConfigPo getByEnvId(Long envId, Long tenantId);

  // ----------前端vo处理-------------------------------------------------------
  Long insertVo(DomainConfigVo vo);

  void updateVo(DomainConfigVo vo);

  void deleteVo(Long id, Long tenantId);

  /**
   * id查询
   *
   * @param id 主键id
   * @return 查询Vo列表
   */
  DomainConfigVo getVo(Long id, Long tenantId);

  /**
   * 查询
   *
   * @param q 查询QueryVo
   * @return 查询Vo列表
   */
  List<DomainConfigVo> listVo(DomainConfigQueryVo q);

  /**
   * 分页查询
   *
   * @param q 查询QueryVo
   * @return 分页查询Po列表
   */
  Result<List<DomainConfigVo>> pageVo(DomainConfigQueryVo q);

  /**
   * 新增域名并添加网关
   *
   * @param p
   * @param k8s
   * @return
   */
  Long insertWithGateway(DomainConfigPo p, K8sInfo k8s);


  /**
   * 更新域名并更新网关
   *
   * @param p
   * @param k8s
   */
  void updateWithGateway(DomainConfigPo p, K8sInfo k8s);

  void deleteWithGateway(DomainConfigPo domainConfigPo, K8sInfo k8s, Long tennatId);
}
